import { reqLogin, reqGetProfile, reqGetBaseInfo } from '@/api/user.js'
// 引入  设置token的cookie 的方法

import { getToken, setToken, removeToken } from '@/utils/auth.js'
// 路由重置 避免多人登录权限问题
import { resetRouter } from '@/router'
const state = {
  token: getToken() || '', // 获取 从cookie的token
  userInfo: {}
}
const mutations = {
  updateToken(state, newToken) {
    state.token = newToken
    setToken(newToken)
  },
  updataUserInfo(state, newUserInfo) {
    state.userInfo = newUserInfo
  },
  removeToken(state) {
    // 调用 清除token
    state.token = ''
    removeToken()
  },
  removeUserInfo(state) {
    state.userInfo = {}
  }
}
const actions = {
  // login发送ajax data 是传参  请求 的数据   给mutation
  async login(context, data) {
    const res = await reqLogin(data)
    console.log(res)
    context.commit('updateToken', res.data)
    return res // 要抛出 调用者才可以接受到
  },
  async  getUserInfo(context) {
    const { data: res1 } = await reqGetProfile()
    console.log(res1)
    // 拿到用户数据  拿到 userid 获取全部基本资料
    console.log(res1.userId)
    const { data: res2 } = await reqGetBaseInfo(res1.userId)
    console.log(res2)
    // 获取全部资料以后 进行 数组拼接 合并数据
    const res = { ...res1, ...res2 }
    // 数据存入当前 state的 userinfo里面
    context.commit('updataUserInfo', res)
    // 抛出用户信息  在权限里面 配置权限路由规则
    return res
  },
  removeData(context) {
    // 清除用户信息
    context.commit('removeToken')
    context.commit('removeUserInfo')
    // 重置路由规则
    resetRouter()
  }
}
const getters = {

}
export default {
  namespaced: true,
  state,
  mutations,
  actions,
  getters
}
